记录一下局域网部署 git 的过程

首先安装依赖:

1
2
$ sudo apt update
$ sudo apt -y install git-core openssh-server openssh-client python-setuptools

然后安装用于管理用户和项目的 Gitosis

1
2
$ git clone https://github.com/res0nat0r/gitosis.git && cd gitosis
$ sudo python setup.py install

新建一个单独用于 git 的账户,-m 用于生成用户文件夹

1
2
$ useradd -m git
$ passwd git

对 Gitosis 进行配置

  1. 本机 生成公钥

    1
    $ ssh-keygen -t rsa
  2. 上传公钥至服务器并激活Gitosis,可以使用记事本配合 vi 复制到服务器端

    1
    $ su git
  3. 初始化Gitosis

    1
    $ gitosis-init < /home/git/id_rsa.pub

到这里 Git 服务器就好了

  • 默认的仓库地址是 /home/git/repositories
  • Git 管理员用户是 git

配置用户

  1. 在本机,将 gitosis-admin 仓库克隆下来
1
$ git clone git@192.168.0.10:gitosis-admin.git
  1. 修改 keydir 文件夹和 gitosis.conf

    keydir 文件夹存放公钥 username.pub 文件,gitosis.conf 中如下填写,意思是用户 username 对 gitosis-admin test 两个仓库具有写的属性(只读属性配置members 和 readonly)

1
2
3
[group gitosis-admin]
members = username
writable = gitosis-admin test
  1. 修改后的仓库推送到服务器
1
2
3
$ git add .
$ git commit -m "add user"
$ git push git@192.168.0.10:gitosis-admin.git master

到这里已经配置成功了,本地项目 test 推送流程

1
2
3
4
5
$ cd test
$ git init
$ git add .
$ git commit -m "first commit"
$ git push git@192.168.0.10:test.git master

在新项目git-test里首次推送数据到服务器前,需先设定该服务器地址为远程仓库,但你不用事先到服务器上手工创建该项目的裸仓库— Gitosis 会在第一次遇到推送时自动创建(貌似 gitosis.conf 需要配置权限)。

目前没有找到匿名用户 clone 的方法,只能手工加载所有人的 公钥 文件。

生成公钥:

1
PS ssh-keygen -t rsa

路径 C:\Users\你的用户名.ssh